package br.urca.http;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.nio.charset.Charset;

import org.json.JSONException;
import org.json.JSONObject;

import br.urca.model.protocolo.ProtocoloCursoTurno;
import br.urca.util.Utils;

public class ProtocoloCursoTurnoHTTP {
	
	public static ProtocoloCursoTurno getReconhecimentoProtocolo(String key, String codCurso) {
		try {
			URL url = new URL("http://"+Utils.SERVIDOR+"/protocolo/consulta/reconhecimento/key="+key+",cod="+codCurso);
			InputStream resposta = url.openStream();
			return parseJSON(resposta);
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	private static ProtocoloCursoTurno parseJSON(InputStream stream) {
		
		try {
			JSONObject jsonObject = new JSONObject(streamToString(stream));
			if (!jsonObject.isNull("resposta")) {
				ProtocoloCursoTurno pct = new ProtocoloCursoTurno();
				
				JSONObject jCursoTurno = jsonObject.getJSONObject("resposta");
				
				if (!jCursoTurno.isNull("codCurso"))
					pct.setCodCurso(jCursoTurno.getString("codCurso"));
				if (!jCursoTurno.isNull("codCentro"))
					pct.setCodCentro(jCursoTurno.getString("codCentro"));
				if (!jCursoTurno.isNull("codCoordenacao"))
					pct.setCodCoordenacao(jCursoTurno.getString("codCoordenacao"));
				if (!jCursoTurno.isNull("nome"))
					pct.setNome(jCursoTurno.getString("nome"));
				if (!jCursoTurno.isNull("turno"))
					pct.setTurno(jCursoTurno.getString("turno"));
				if (!jCursoTurno.isNull("reconhecimento"))
					pct.setReconhecimento(jCursoTurno.getString("reconhecimento"));
				if (!jCursoTurno.isNull("reconhecimentoIntegral"))
					pct.setReconhecimentoIntegral(jCursoTurno.getString("reconhecimentoIntegral"));
				if (!jCursoTurno.isNull("titulacao"))
					pct.setTitulacao(jCursoTurno.getString("titulacao"));
				if (!jCursoTurno.isNull("localidade"))
					pct.setLocalidade(jCursoTurno.getString("localidade"));
				
				return pct;
			}
		} catch (JSONException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		return null;
	}
	
	private static String streamToString(InputStream inputStream)
			throws IOException {

		Charset charset = Charset.forName("ISO-8859-1");
		InputStreamReader stream = new InputStreamReader(inputStream, charset);
		BufferedReader reader = new BufferedReader(stream);
		StringBuffer responseBuffer = new StringBuffer();

		String read = "";
		while ((read = reader.readLine()) != null) {
			responseBuffer.append(read);
		}
		return responseBuffer.toString();
	}

}
